// 获取应用实例
const app = getApp()

Page({
  data: {
    hasUserInfo: false,
    userInfo: null,
    loginRoleChosen: null, // null, '学生', '宿管'
    studentIdInput: '',
    canIUseGetUserProfile: false
  },
  
  onLoad: function () {
    // 检查是否已经登录
    const userInfo = wx.getStorageSync('userInfo')
    if (userInfo) {
      this.setData({
        hasUserInfo: true,
        userInfo: userInfo
      })
      // 如果已经选择了角色并完成验证，直接跳转到首页
      const userRole = wx.getStorageSync('userRole')
      if (userRole) {
        this.directToHome()
      }
    }

    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
  },
  
  // 处理微信一键登录
  handleWechatLogin: function() {
    // 先检查是否已经获取过用户信息
    if (this.data.hasUserInfo && this.data.userInfo) {
      this.setData({
        loginRoleChosen: null // 直接进入角色选择
      });
      return;
    }

    wx.showLoading({
      title: '登录中...',
    });
    
    // 获取用户信息
    wx.getUserProfile({
      desc: '用于完善用户资料',
      success: (res) => {
        const userInfo = res.userInfo;
        wx.setStorageSync('userInfo', userInfo);
        this.setData({
          hasUserInfo: true,
          userInfo: userInfo,
          loginRoleChosen: null // 直接进入角色选择
        });
      },
      fail: (err) => {
        console.error('获取用户信息失败：', err);
        wx.showToast({
          title: '获取用户信息失败',
          icon: 'none'
        });
      },
      complete: () => {
        wx.hideLoading();
      }
    });
  },
  
  chooseRole: function(e) {
    const role = e.currentTarget.dataset.role;
    const roleText = role === 'student' ? '学生' : '宿管';
    
    this.setData({
      loginRoleChosen: roleText
    });

    // 如果是宿管，等待页面状态更新后再进行登录
    if (role === 'manager') {
      wx.nextTick(() => {
        this.handleManagerLogin();
      });
    }
  },
  
  onStudentIdInput: function(e) {
    this.setData({
      studentIdInput: e.detail.value
    });
  },
  
  backToRoleSelection: function() {
    this.setData({
      loginRoleChosen: null,
      studentIdInput: ''
    });
  },
  
  handleStudentLogin: async function() {
    if (!this.data.studentIdInput) {
      wx.showToast({
        title: '请输入学号',
        icon: 'none'
      });
      return;
    }

    wx.showLoading({
      title: '验证中...',
    });

    try {
      const res = await wx.cloud.callFunction({
        name: 'handleLogin',
        data: {
          loginType: 'student',
          studentId: this.data.studentIdInput,
          userInfo: this.data.userInfo
        }
      });

      wx.hideLoading();

      if (res.result && res.result.success) {
        // 保存用户信息和角色
        const userData = res.result.userData;
        wx.setStorageSync('userRole', '学生');
        wx.setStorageSync('userData', {
          ...userData,
          userInfo: this.data.userInfo
        });
        
        app.globalData.userInfo = userData;
        app.globalData.userRole = '学生';
        
        if (userData.openid) {
          app.globalData.openid = userData.openid;
        }

        wx.showToast({
          title: '验证成功',
          icon: 'success',
          duration: 1500
        });

        // 跳转到首页
        this.directToHome();
      } else {
        wx.showToast({
          title: res.result.message || '学号验证失败',
          icon: 'none',
        });
      }
    } catch (e) {
      wx.hideLoading();
      console.error("云函数调用失败: ", e);
      wx.showToast({
        title: '验证失败，请检查网络',
        icon: 'none',
      });
    }
  },
  
  handleManagerLogin: async function() {
    wx.showLoading({
      title: '登录中...',
    });

    try {
      const res = await wx.cloud.callFunction({
        name: 'handleLogin',
        data: {
          loginType: 'manager',
          userInfo: this.data.userInfo
        }
      });

      wx.hideLoading();

      if (res.result && res.result.success) {
        // 保存用户信息和角色
        const userData = res.result.userData;
        wx.setStorageSync('userRole', '宿管');
        wx.setStorageSync('userData', userData);
        
        app.globalData.userInfo = userData;
        app.globalData.userRole = '宿管';
        
        if (userData.openid) {
          app.globalData.openid = userData.openid;
        }

        wx.showToast({
          title: '登录成功',
          icon: 'success',
          duration: 1500
        });

        // 跳转到首页
        this.directToHome();
      } else {
        // 显示错误提示
        wx.showToast({
          title: res.result.message || '您不是宿管',
          icon: 'none',
          duration: 1000
        });
        
        // 延迟返回角色选择，等待提示显示完
        setTimeout(() => {
          this.setData({
            loginRoleChosen: null
          });
        }, 1000);
      }
    } catch (e) {
      wx.hideLoading();
      console.error("云函数调用失败: ", e);
      wx.showToast({
        title: '登录失败，请检查网络',
        icon: 'none',
        duration: 2000
      });
      
      // 网络错误也返回角色选择
      setTimeout(() => {
        this.setData({
          loginRoleChosen: null
        });
      }, 1000);
    }
  },

  // 统一处理跳转到首页的方法
  directToHome: function() {
    wx.switchTab({
      url: '/pages/home/home',
      fail: (err) => {
        console.error("跳转首页失败：", err);
        wx.showToast({
          title: '跳转失败，请重试',
          icon: 'none'
        });
      }
    });
  }
}); 